go lang Go lang - 9 : defer 와 패닉 해당 라인까지만 실행되는 에러로 실행 중에 기능을 중단시킨다. 단, 패닉이 발생되면 작성된 defer 를 역순으로 먼저 실행하고 패닉처리됩니다. 찾아보면 defer 에 대해서 잘 정리된 글들이 많이 있다. 내가 이해한 바로는 해당 함수의 코드실행을 지연시키고(거꾸로 실행하도록) 반드시 실행하게 만든다. File 을 가져오는 부분을 아래 내용으로 구현해보자! 1. 파일을 읽었는데 비어있으면 e... go langgo lang Go lang - 10 : 포인터 1 Go는 값에 의한 호출을 사용하는 언어라고 한다 함수에 파라미터로 넘겨지는 변수가 있으면 "반드시" 복사본을 만들어 넘긴다 그렇다면 외부 함수에서 값을 변경해본다면 변경이 적용될까? 분명 modifyFail 은 값을 단순히 "복사" 했기 때문에 test1 은 변경되지 않는다 그러나 test2 는 변수를 변경했다. 그 이유는 Go 가 Pointer 를 사용하고 map 은 Pointer 를 통해... go langgo lang Go lang - 4 : 함수 1 add 함수를 만들어서 num1, num2를 파라미터로 서로 더해 리턴하는 형태이다. 이때 num1 과 num2 는 모두 int 형이라 num1 가 int 형이라는 것을 생략했다! ( 편리 )... go langgo lang Go lang - 2 : 반복문 - for Go 언어에 반복문은 오직 For 문 뿐이다 간단하게 구구단을 찍어보자 완전형 for 구문 only 조건식 삼항 연산자가 없어서 나중에 함수형(FP)으로 만드는 건 조금 힘들지 않을까 싶은데...? 일단 쭉 달려보자 !... go langgo lang Go lang - 12 : 메서드 func에 추가적으로 리시버를 명시해준다 아래 func 뒤에 (d Duck) 부분이 리시버이다. 여기서 리시버를 포인터로 받거나 값을 받는 경우가 있다 포인터를 받으면 리시버가 가진 값이 변경될 수 있고 아니라면 값으로 받으면 된다. Age 값이 5 증가한 것을 볼 수 있다.... go langgo lang Go lang - 6 : 함수 3 Go 에서 함수는 다중 반환값을 허용한다! 조금 생소하지만 편리해 보인다.... go langgo lang Go lang - 7 : 함수를 값처럼 쓰기 아래처럼 함수의 형태를 명시 할 수 있는 Type 지정을 해주었다. 추후 문서화나 테스트를 찍어낼때 활용하기 좋은 방법에 힌트가 될것같다.. 나중에 코딩테스트 공부할 때를 대비해서 strconv 패키지같은 Convert 패키지를 정리해둬야겠다.... go langgo lang Go lang - 8 : 익명 함수 함수 내부에서 새로운 함수를 정의해서 변수로 할당해서 반환할 수 있다. 이렇게 이름이 없는 함수는 '익명 함수'라고 불린다. 두 내용을 합쳐보자 main 에서 만들어진 4개의 변수는 마치 함수처럼 동작하고 있다. (사실 함수 맞다) 다른 언어에서도 익명 함수는 많이 쓰이고 있는데, 사실 함수형으로 개발하기 좋아서 빨리 배우고 싶었다.... go langgo lang Go lang - 11 : 포인터 2 포인터에 대해 어느정도 알고 있다고 가정하고 생략하며 진행한다. 일단 핵심은 변수가 저장된 메모리의 [주소 값] 을 활용하는 것이다. 주로 외부에서 변수를 수정하는 경우 사용한다. 올바른 포인터의 사용은 프로그램을 더 효율적이고 더 빠르게 만들어준다. 일단 문법을 살펴보면 다음과 같다 일단 Go 의 포인터 구문은 C/C++ 과 거의 같다 & : 메모리 주소 반환 * : 주소 값을 역으로 참조... go langgo lang Go lang - 3 : 쓸모있는 제어문 - switch switch 는 표현식(Expression)과 타입이 있다. 기초니까 표현식만 확인해보자 ! Go의 switch 문법은 다른 언어와 많이 다르다 다른 언어에서는 꼭 써야 할 break 가 없고, case 안에 아무것도 없다면 default 도 실행하지 않는다! ( 아무것도 안함 ) 확실히 가독성이 좋고 불필요한 규칙이 안보여서 깔끔하다! 만약 반복문 탈출을 원한다면 break 를 추가해서 f... go langgo lang Go lang - 5 : 함수 2 go langgo lang Go lang - 1 : Hello Wolrd 참고로 필자는 Jetbrain 사의 goland IDE 를 사용하고 있다 프로젝트에 hello.go 파일을 만들고 아래 내용을 작성하자 이후 Run ( Ctrl + Shift + F10 ) 해보자 콘솔 5번째 줄 쯤에 "Hello world!!" 가 잘 찍힌 것을 볼 수 있다.... go langgo lang
Go lang - 9 : defer 와 패닉 해당 라인까지만 실행되는 에러로 실행 중에 기능을 중단시킨다. 단, 패닉이 발생되면 작성된 defer 를 역순으로 먼저 실행하고 패닉처리됩니다. 찾아보면 defer 에 대해서 잘 정리된 글들이 많이 있다. 내가 이해한 바로는 해당 함수의 코드실행을 지연시키고(거꾸로 실행하도록) 반드시 실행하게 만든다. File 을 가져오는 부분을 아래 내용으로 구현해보자! 1. 파일을 읽었는데 비어있으면 e... go langgo lang Go lang - 10 : 포인터 1 Go는 값에 의한 호출을 사용하는 언어라고 한다 함수에 파라미터로 넘겨지는 변수가 있으면 "반드시" 복사본을 만들어 넘긴다 그렇다면 외부 함수에서 값을 변경해본다면 변경이 적용될까? 분명 modifyFail 은 값을 단순히 "복사" 했기 때문에 test1 은 변경되지 않는다 그러나 test2 는 변수를 변경했다. 그 이유는 Go 가 Pointer 를 사용하고 map 은 Pointer 를 통해... go langgo lang Go lang - 4 : 함수 1 add 함수를 만들어서 num1, num2를 파라미터로 서로 더해 리턴하는 형태이다. 이때 num1 과 num2 는 모두 int 형이라 num1 가 int 형이라는 것을 생략했다! ( 편리 )... go langgo lang Go lang - 2 : 반복문 - for Go 언어에 반복문은 오직 For 문 뿐이다 간단하게 구구단을 찍어보자 완전형 for 구문 only 조건식 삼항 연산자가 없어서 나중에 함수형(FP)으로 만드는 건 조금 힘들지 않을까 싶은데...? 일단 쭉 달려보자 !... go langgo lang Go lang - 12 : 메서드 func에 추가적으로 리시버를 명시해준다 아래 func 뒤에 (d Duck) 부분이 리시버이다. 여기서 리시버를 포인터로 받거나 값을 받는 경우가 있다 포인터를 받으면 리시버가 가진 값이 변경될 수 있고 아니라면 값으로 받으면 된다. Age 값이 5 증가한 것을 볼 수 있다.... go langgo lang Go lang - 6 : 함수 3 Go 에서 함수는 다중 반환값을 허용한다! 조금 생소하지만 편리해 보인다.... go langgo lang Go lang - 7 : 함수를 값처럼 쓰기 아래처럼 함수의 형태를 명시 할 수 있는 Type 지정을 해주었다. 추후 문서화나 테스트를 찍어낼때 활용하기 좋은 방법에 힌트가 될것같다.. 나중에 코딩테스트 공부할 때를 대비해서 strconv 패키지같은 Convert 패키지를 정리해둬야겠다.... go langgo lang Go lang - 8 : 익명 함수 함수 내부에서 새로운 함수를 정의해서 변수로 할당해서 반환할 수 있다. 이렇게 이름이 없는 함수는 '익명 함수'라고 불린다. 두 내용을 합쳐보자 main 에서 만들어진 4개의 변수는 마치 함수처럼 동작하고 있다. (사실 함수 맞다) 다른 언어에서도 익명 함수는 많이 쓰이고 있는데, 사실 함수형으로 개발하기 좋아서 빨리 배우고 싶었다.... go langgo lang Go lang - 11 : 포인터 2 포인터에 대해 어느정도 알고 있다고 가정하고 생략하며 진행한다. 일단 핵심은 변수가 저장된 메모리의 [주소 값] 을 활용하는 것이다. 주로 외부에서 변수를 수정하는 경우 사용한다. 올바른 포인터의 사용은 프로그램을 더 효율적이고 더 빠르게 만들어준다. 일단 문법을 살펴보면 다음과 같다 일단 Go 의 포인터 구문은 C/C++ 과 거의 같다 & : 메모리 주소 반환 * : 주소 값을 역으로 참조... go langgo lang Go lang - 3 : 쓸모있는 제어문 - switch switch 는 표현식(Expression)과 타입이 있다. 기초니까 표현식만 확인해보자 ! Go의 switch 문법은 다른 언어와 많이 다르다 다른 언어에서는 꼭 써야 할 break 가 없고, case 안에 아무것도 없다면 default 도 실행하지 않는다! ( 아무것도 안함 ) 확실히 가독성이 좋고 불필요한 규칙이 안보여서 깔끔하다! 만약 반복문 탈출을 원한다면 break 를 추가해서 f... go langgo lang Go lang - 5 : 함수 2 go langgo lang Go lang - 1 : Hello Wolrd 참고로 필자는 Jetbrain 사의 goland IDE 를 사용하고 있다 프로젝트에 hello.go 파일을 만들고 아래 내용을 작성하자 이후 Run ( Ctrl + Shift + F10 ) 해보자 콘솔 5번째 줄 쯤에 "Hello world!!" 가 잘 찍힌 것을 볼 수 있다.... go langgo lang